Sistema operativo

Sistema operativo

In informatica, un sistema operativo (abbreviato in SO) e il programma responsabile del diretto controllo e gestione dell'hardware che costituisce un computer e delle operazioni di base. Si occupa anche di controllare gli accessi degli utenti e dei processi che sono eseguiti.
Il sistema operativo è la personalità più profonda di un computer.
Sono sistemi operativi Macintosh (Mac OS), MS DOS, Windows, OS/2, UNIX, Linux, BeBox, Amiga...
Queste sigle corrispondono per l'utente ad altrettanti e definitivamente diversi modi di lavorare, di comunicare con il computer, di realizzare con esso i propri lavori, assai più dell'hardware che si utilizza.
Il sistema operativo costituisce l'insieme delle routine che il computer mette a disposizione dell'utente e dei programmi, e costituisce l'aspetto grafico (che può essere in concreto nullo, come nel caso del MS DOS) e le capacita del computer, per esempio di processare immagini e suono, o di collegarsi ad altri computer.
In pratica il sistema operativo costituisce quello che noi vediamo guardando lo schermo e il nostro modo di lavorare con il PC.

Ms Dos
Nel 1981 IBM calava nel nascente mercato del Personal Computer l'asso di un proprio computer, che chiamo proprio PC.
Non era costruito in casa, ma sorprendentemente frutto dell’assemblaggio di terze parti, come il microprocessore 8088 di Intel.
Il sistema operativo venne affidato a una piccola ditta di Seattle, la Microsoft di Paul Allen e Bill Gates, che aveva lavorato a un BASIC molto diffuso.
Era un sistema operativo di vecchio stampo, sul modello degli esistenti CP/M di Gary Kildall e DOS 3.3 di Apple //, basato sui comandi in linea battuti da una tastiera. Era un sistema operativo povero, ma il migliore comunque fra quelli sul mercato.
IBM compì un errore di proporzioni allora inimmaginabili lasciando a Microsoft i diritti di distribuzione autonoma di quel sistema operativo, con il nome di MS DOS, per risparmiare un pugno di dollari sull'acquisto.
Su quel singolo errore si basa la fortuna attuale di Bill Gates, l‘uomo più ricco del mondo.
Il PC IBM si dimostrò, infatti, una macchina certamente facile da imitare, e tanto il processore Intel che il sistema operativo MS DOS si trovava sul libero mercato.
Nacquero i cloni, che stanno alla base dell’attuale market share delle macchine basate su Intel/Microsoft, ora definite Windows compatibili o più familiarmente Wintel.

Macintosh
L‘unica casa a non uniformarsi (oltre a Atari e in parte Commodore, oggi entrambe scomparse) fu proprio Apple. Apple II non fu mai messo in grado di competere realmente con il PC IBM, forse soprattutto per la mancata crescita del suo (economico) processore. Apple aveva altro per le mani: nel 1984 fra squilli di fanfara usciva Macintosh, un computer molto innovativo, dotato d’interfaccia grafica, monitor color carta con la nitida definizione di settantadue punti per pollice, un dispositivo di puntamento a mouse e il più potente microprocessore sul mercato, il Motorola 68000 a 32 bit.
Nel 1986 Macintosh aveva già di serie una scheda sonora, una porta sia per SCSI e per il collegamento con gli altri Mac.
Un computer molto facile da usare, produttivo, efficiente.
Apple considera Mac cosi sorprendente da poter mantenere da solo una quota rilevante del mercato.
Macintosh è un sistema proprietario. Significa che nessuno poteva (e può) produrne, se non Apple.
Ogni altra ditta poteva invece produrre un DOS compatibile.
Questo spiega il successo di MS DOS anche negli anni in cui il sistema era palesemente e sorprendentemente inferiore a Macintosh, OS/2, Amiga.

OS/2 e Windows
IBM non era cieca all’inferiorità del DOS, e alla fine degli anni 80 si diede da fare per aggiornare il sistema e gettare le basi per una piattaforma hardware standard più affidabile dei cloni.
Creò in comunità con Microsoft la prima versione del nuovo sistema operativo, dalla più moderna interfaccia grafica, che prese perciò il nome di OS/2, con lo scopo di rimpiazzare PC DOS (ormai per tutti MS DOS).
E qui ebbe la seconda sorpresa: MS DOS si rivelò una creatura autonoma, ormai svincolata dal suo creatore.
Gli utenti non compravano OS/2 e i produttori di hardware non si aggiornavano al nuovo (bus) ma continuavano a caricare MS DOS.
Il merito di Bill Gates fu di rendersi conto molto presto dell'inerzia del mercato e dell‘utente DOS.
L'illuminazione fu: il mercato non vuole alta tecnologia, e l'utente medio, che usa il computer come se fosse una lavapiatti ma continuare a usare i soli due comandi che ha imparato.
Gates trovo il coraggio di sciogliere la sacra alleanza con IBM e continuo a sviluppare il suo DOS, limitandosi ad aggiungere una specie di programma grafico di utilità per la gestione dei file, la prima versione di Windows.

Windows vs Mac
L'utente Windows/ DOS è particolare. Usa un sistema operativo non facile da utilizzare e al limite dell’impossibile da configurare, ma al tempo stesso di solito sa poco o nulla di computer. Usa un solo programma o poco più, di cui impara i "tasti da schiacciare".
Ritiene che copiare un file, compiere un back up, aggiornare un programma siano compiti da tecnico specializzato.
Ho sentito un eminente clinico sentenziare che si trova molto bene a usare un famoso programma di scrittura, e che anzi era in attesa che "venissero a installargli la nuova versione"!
Una frase del genere è l'equivalente di dire che la Parker è un’ottima penna, e che si è in attesa del servizio di assistenza tecnica per cambiarne la cartuccia d'inchiostro!
Il motivo principale della diffusione del DOS è stata la compatibilità: per produrre un dos, un’azienda non deve scriversi sistemi operativi e programmi, ne deve progettare un microprocessore, ma semplicemente acquistarli già pronti.
Fra i motivi per cui la gente continua a usare Win/DOS è anche da evidenziare la complicità dei venditori (quelli PC sono assai più numerosi), dei tecnici (che spesso guadagnano dall'assistenza di vecchi PC più denaro del valore stesso - spesso nullo - della macchina) e dei programmatori di software verticale - cioè i gestionali su misura (che continuano a programmare nel vecchio DOS perché altro non sanno fare). Moltissimi uffici lavorano in modo notevolmente poco efficiente utilizzando programmi di vecchia concezione, macchine di scarso valore e pagando fior di quattrini l'assistenza, ma il personale e - naturalmente - i consulenti sono assolutamente contrari a un cambiamento.
Macintosh è sopravvissuto fino a oggi grazie alla manifesta superiorità, che gli ha permesso di inventare vere fette di mercato per il quale è (era) necessario: il desktop publishing innanzitutto. Tanto che si diceva che chi compra un computer per il proprio lavoro sceglie Mac, chi lo compra per il lavoro degli altri sceglie DOS.

Windows 98 vs Mac OS
In che lingua si coniuga il futuro (prossimo) del personal computer? Windows ha accorciato le distanze con Mac OS 9, ma la differenza in termine di efficienza e produttività rimane forte, specie sul fronte della configurabilità. Far funzionare un Windows che non ne vuol sapere può diventare un incubo, aggiungere una periferica è ancora un'operazione per niente scontata, e infine un utente Windows non si stupisce che un programma Windows non funzioni sulla propria macchina. D’altra parte Macintosh ha nuovamente iniziato a dettare le regole, sia con i propri computer colorati che, soprattutto, con un sistema operativo nuovo fiammante, che ha preso il nome di Mac OS X.

Linux
C'e una terza scelta fra un sistema proprietario come Mac OS e un sistema non troppo efficiente come Windows? Inaspettatamente la risposta è arrivata dal mondo OpenSource: hackers che hanno creato dalle fondamenta un sistema operativo compatibile con Unix e veramente efficiente e robusto, cioè Linux.
Linux è un tale successo che molte aziende hardware hanno cominciato a fornirlo come scelta al posto di Windows; il rovescio della medaglia e che Linux è un sistema ancora in costruzione, e per ora il suo utilizzo comporta il bisogno di conoscere gli oscuri comandi in linea di Unix. Fra le aziende che si stanno occupando oggi della crescita di Linux si contano oggi IBM, Corel, Sun oltre ad aziende pioniere come Red Hat e Caldera.
Non che lo stesso Gates non abbia cercato di correre ai ripari.
Da diversi anni ha creato un vero sistema operativo grafico a 32 bit, Windows NT, che dietro la stessa confusa interfaccia di Windows nasconde un sistema potente e moderno, dotato per esempio di vero multitasking, cioè della capacità del sistema nel compiere più operazioni simultaneamente (funzione che in questi tempi di computer in rete si sta manifestando essere vitale).

Struttura del sistema operativo

Un generico sistema operativo moderno si compone di alcune parti ben definite:
• Un gestore di file system che si occupa di esaudire le richieste di accesso al di massa.
• Un gestore di memoria virtuale che alloca pagine di memoria a richiesta e si assicura che questa sia presente nella memoria fisica al momento giusto.
• Uno scheduler che assicura ai vari processi in esecuzione una ben definita quantità di tempo di elaborazione.
• Uno spooler che accumula i dati da stampare e li accoda in successione.
• Un’interfaccia utente (shell o GUI) che permette agli esseri umani di interagire con la macchina.
• Un kernel, fulcro del sistema, che gestisce il tutto.
Secondo i casi, un particolare sistema operativo può avere tutte questi parti o solo alcuni. Vediamo ora una serie di sistemi operativi possibili, dal più semplice al più complesso.

Monitor
Il solo kernel, con una minima interfaccia interattiva per impartire i comandi, permette di scrivere in memoria il programma da eseguire e di lanciarlo, non ha nessun’altra caratteristica. È semplicissimo (per un computer), spesso i suoi comandi sono semplici chiamate dirette a subroutine in linguaggio macchina, è stato anche il primo tipo di sistema operativo mai implementato su un computer.

Interprete
Il secondo passo verso una migliore gestione del computer si ha con lo sviluppo di un’interfaccia utente separata dal kernel, un interprete di comandi che funga anche da interfaccia utente, da shell.
Questa shell primitiva di solito funge anche da interprete per un linguaggio di programmazione: secondo le scelte dei progettisti del software può essere un linguaggio vero e proprio oppure uno più semplice per lo scripting con cui creare comandi batch.

Dos
Un computer diventa molto più utile se dotato di una memoria di massa: per gestirla serve un gestore di file system, cioè un insieme di funzioni che permetta di organizzare i dati sulla superficie dei mezzi di memorizzazione secondo una struttura ben precisa. I sistemi operativi capaci di gestire un file system sono detti genericamente Disk Operating System, cioè DOS appunto. L'esemplare più famoso e senz'altro il MS-DOS della Microsoft. Esiste anche una versione libera del dos, denominata: FreeDOS.

Sistema multitask
Alcuni programmi non hanno sempre realmente bisogno della CPU: a volte, invece di eseguire istruzioni stanno aspettando che arrivino dei dati da un file, o che l'utente prema un tasto alla tastiera. Si può, in linea di principio, usare questi tempi "morti" per far girare un altro programma. Questa idea, sorta fin dai primi anni 50, si rese concreta nei sistemi operativi multitasking, cioè dotati di uno scheduler che manda in esecuzione più processi (avvii di programmi) contemporaneamente, assegnando a turno la CPU a ognuno e sospendendo l'esecuzione dei programmi in attesa di un evento esterno (lettura sulla/dalla memoria di massa, stampa, input utente ecc.) finché questo non avviene.
Dovendo ospitare in memoria centrale più programmi nello stesso tempo, i sistemi multitask hanno bisogno di più memoria rispetto a quelli monotask: questo porta questo tipo di sistemi operativi a fare spesso uso di un gestore di memoria virtuale.

Sistema multiutente
Se un computer può far girare più programmi contemporaneamente, allora può anche accettare comandi da più utenti contemporaneamente: in effetti, dal multitasking alla multiutenza il passo e molto breve tecnicamente, ma fa sorgere una serie di nuovi problemi dal punto di vista della sicurezza del sistema, cioè come distinguere i vari utenti tra loro, come accertarsi che nessun utente possa causare danni agli altri o alla macchina che sta usando ecc. Questi problemi si risolvono assegnando un account univoco per ogni utente, assegnando un proprietario ai file e ai programmi e gestendo un sistema di permessi per l’accesso a essi, e prevedendo una gerarchia di utenti (cioè di account) per cui il sistema rifiuterà tutti i comandi potenzialmente "pericolosi" e li accetterà soltanto se impartiti da un utente in cima alla gerarchia, che è l'amministratore del sistema (generalmente 1‘account root nei sistemi Unix, Administrator nei sistemi Windows).

Parti del sistema operativo


Kernel
Il kernel è il cuore di un sistema operativo. Si tratta di un software con il compito di fornire ai programmi in esecuzione sul computer e agli altri moduli elementi il sistema operativo le funzioni fondamentali e un accesso controllato all'hardware. Quali funzioni sia opportuno che il kernel debba fornire e quali possano essere demandate a moduli esterni e oggetto di opinioni divergenti: se il kernel di un sistema operativo implementa soltanto un numero molto ristretto di funzioni, delegando il resto ad altre parti, si parla di microkernel. Il vantaggio di un sistema operativo microkernel è la semplicità del suo kernel; lo svantaggio è l’interazione più complessa fra il kernel e le altre parti del S.O. stesso, che rallenta il sistema.
Il kernel è un’evoluzione del microkernel e, per motivi d’inefficienza sulle prestazioni, è stato preferito il kernel dato che l’altro per comunicare, ha bisogno di “intermediari”.
Tra l’altro il monolitico (kernel) s’ingrossa o diminuisce e quindi ha una più veloce ottimizzazione del sistema anche se in controparte può occupare più spazio nonostante il microkernel viene ad oggi ancora utilizzato in automazioni robotiche e mediche per il fatto che i componenti del sistema risiedono in aree di memoria separate, private e protette; cosa che non fa un monolitico.

File system


Il file system è il modo in cui i file sono immagazzinati e organizzati su un dispositivo di archiviazione, come un hard disk o un CD-ROM. Esistono molti tipi di file system, creati per tanti sistemi operativi, per diverse unità di memorizzazione e per molteplici usi. Esistono due grandi classi di file system: quelli per unità locali, destinate a organizzare fisicamente i dati su un disco, e i file system distribuiti, nati per condividere i dati fra più computer collegati attraverso una rete, superando le differenze fra sistemi operativi e file system locali delle varie macchine.

File system per unità locali
• Amiga File System
• CFS
• EX't2
• Ext3
• FAT
• HFS
• HPFS
• ISO 9660
• IFS
• Minix
• NTFS
• ReiserF S
• UFS
• XFS

File system distribuiti
• Nfs
• Coda
• Andrew

Scheduler
Lo scheduler è un elemento fondamentale dei sistemi operativi multitasking, cioè quelli in grado di eseguire più processi (task) contemporaneamente. Lo scheduler si occupa di fare avanzare un processo interrompendone temporaneamente un altro, realizzando cosi un cambiamento di situazione (context switch). Generalmente i computer con un processore sono in grado di eseguire un programma per volta, quindi per far convivere più task è necessario usare lo scheduler. Esistono vari algoritmi di scheduling che permettono di scegliere nella maniera più efficiente possibile quale task far proseguire. Allo stato de1l'arte, esistono scheduler.

Gestore di memoria
Il gestore di memoria è la parte del sistema operativo che si occupa di gestire e assegnare la memoria ai processi che ne fanno richiesta. La gestione della memoria e necessaria per tenere traccia di quanta memoria e impegnata e di quanta invece è disponibile per soddisfare nuove richieste: in mancanza di un sistema di gestione, si avrebbe prima 0 poi il caso di processi che ne sovrascrivono altri, con gli ovvi inconvenienti.
Un altro buon motivo per registrare la memoria usata dai vari processi è che in caso di errori gravi i processi possono andare in crash e non essere più in grado di comunicare al sistema che la memoria che occupano può essere liberata: compito del gestore di memoria, in caso di terminazione anomala del processo, è di marcare come libere le zone di memoria possedute dal processo "defunto", rendendole disponibili per nuove allocazioni.

Gestore di memoria virtuale
Nel caso il sistema abbia un meccanismo di memoria virtuale (vedi), il gestore della memoria si occupa anche di mappare la memoria virtuale offerta ai programmi sulla memoria fisica e sui dischi rigidi del sistema, copiando da memoria a disco rigido e viceversa le parti di memoria necessarie di volta in volta ai programmi, senza che i programmi stessi o gli utenti debbano preoccuparsi di nulla.

Protezione della memoria
La protezione della memoria è un sistema per prevenire la corruzione della memoria di un processo da parte di un altro. Di solito è gestito via hardware (ad esempio con una MMU, Memory management unit) e dal sistema operativo per allocare spazi di memoria distinti a processi differenti.

Spooler di stampa
Lo spooler di stampa è stato, storicamente, uno dei primi moduli esterni del sistema operativo a essere implementato, per risolvere il problema della gestione delle stampe su carta.
Infatti, essendo le stampanti elettromeccaniche dei dispositivi molto lenti, i primi programmi per elaboratore dovevano necessariamente sprecare molto tempo di CPU, veramente prezioso all‘epoca, per controllare la stampante e inviarle i dati. Fu ideato un programma separato, che girava con una priorità molto bassa e che era visto dagli altri programmi come una normale stampante: in realtà invece lo spooler accumulava i dati che un programma doveva stampare in un’apposita area di memoria RAM, e poi si faceva carico del processo di stampa vero e proprio lasciando gli altri programmi liberi di continuare la loro esecuzione.
Il meccanismo fondamentale dello spooler di stampa è rimasto sostanzialmente invariato dai suoi albori fino ad oggi: con gli anni e con il progredire della tecnologia le modifiche più rilevanti sono state la capacità di gestire più stampanti selezionabili a piacere, e la capacità di gestire anche stampanti remote, collegate cioè non direttamente al computer su cui gira lo spooler ma ad altri elaboratori connessi via rete.

Sistemi operativi noti o importanti

Vedi la voce principale elenco dei sistemi operativi: • AmigaOS
o AROS
• BGOS
o Haiku
o Zeta
• CP/67
• CP/CMS
• CP/M
• DOS
o DR-DOS
o DOS/V S
o DOS/V SE
o FreeDOS
o MS-DOS
o PC-DOS
• GNU/Linux
• GNU/Hurd
• Mac OS
• Menuet OS
• MOfphOS
• MSX-DOS
• MVS
• OS/2
• OS/400
• OS/360
• Qnx
• Embedded
• TOS
• Unix
o AIX
o BSD (puri)
 FreeBSD
 DragonflyBSD
 NetBSD
 OpenBSD
o BSD (Derivati impropri)
 SunOS
 NeXTSTEP
 Mac OSX
o System III e System V
 Solaris
 AIX
 HP-UX
 IRIX
 OSF/ 1
 Tru64
o Minix
• VM/CMS'
o VM/ESA
o VM/SP
o VM/XA
o z/VM
• VMS
o OpenVMS
• Windows
o Ambienti grafici a 16 bit per sistemi operativi DOS:
 Windows 3.0
 Windows 3.1
 Windows 3.11 (Windows for Workgroups)
o Sistemi basati su kernel ibrido 16/32 bit:
 Windows 95
 Windows 98
 Windows ME
o Sistemi basati su Kernel NT:
 Windows NT 3.x (versioni client e server)
 Windows NT 4 (versioni client e server)
 Windows 2000 (versioni client e server)
 Windows XP (Versione client) e Windows Server 2003 (versione server)
 Windows Vista (Rilasciato nel 2007)
o ReactOS (clone open-source con architettura NT).